package map;

import java.util.*;

/**
 * Map的遍历
 * Map支持三种遍历方式:
 * 1:遍历所有的key.----------Set<ket> keySet():
 * 2:遍历所有的value.--------Collection value():
 * 3:遍历每一组键值对.--------Set<Entry> entrySet():------forEach():
 */
public class MapDemo2 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("数学",99);
        map.put("语文",98);
        map.put("英语",97);
        map.put("物理",96);
        map.put("化学",95);
        map.put("生物",94);
        int num = map.size();
        System.out.println(num);
        System.out.println(map);
        /** Set<ket> keySet(): 遍历所有的key*/
        /*
            遍历所有的key
            Set<ket> keySet()
            将Map中所以的key存入一个Set集合后将其返回.
         */
        Set<String> keySet = map.keySet();
        for(String key : keySet){

            System.out.println("key:"+key);
        }
        System.out.println("----------有请下一位----------");
        /** Set<Entry> entrySet(): 遍历每一组键值对*/
        /*
            遍历每一组键值对
            Set<Entry> entrySet()
            将当前Map中每组键值对以一个Entry实例表示并存入Set集合将其返回.
         */
        Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
        for(Map.Entry<String,Integer> e : entrySet){
            String key = e.getKey();
            Integer Set = e.getValue();
            System.out.println(key+":"+Set);
        }
        System.out.println("----------有请下一位----------");
        /** forEach(): 遍历每一组键值对*/
        /*
            Map也支持使用forEach方法遍历键值对
         */
        map.forEach((k,v)-> System.out.println(k+":"+v));
        System.out.println("----------有请下一位----------");
        /** Collection value(): 遍历所有的value*/
        /*
            遍历所有的value
            Collection value()
            将当前Map中所有的value以一个集合形式返回.
         */
        Collection<Integer> c = map.values();
        c.forEach((e)-> System.out.println("value:"+e));
        c.forEach(System.out::println);






    }
}
